<?php

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

$app->bind('easyWechat',function() use($app){
    $options = array(
        'debug'  => true,
        'app_id' => 'wx0eb2cbbedba319ba',
        'secret' => '0d2145a25a9173205250e7e64e20ce9b',
        'token'  => 'grhndfklsu458439823ioewjkf',
        'oauth' => array(
            'callback' => '/wechat/oauth/callback'
        ),
        'payment' => [
            'merchant_id'        => '1498747582',
            'key'                => 'KJHWDailu2eKSU87281Y32YERGEHWIEQ',
            'cert_path'          => base_path('resources/cert') . '/apiclient_cert.pem', // XXX: 绝对路径！！！！
            'key_path'           => base_path('resources/cert') . '/apiclient_key.pem',      // XXX: 绝对路径！！！！
        ],
    );
    return EasyWeChat\Factory::officialAccount($options);
});

/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/

return $app;
